<?php
/**
 * 自定义的加密解密
 * @author mejinke@gmail.com
 * 2011-05-02
 */

/**
 * 自定义内容加密
 * @param string $str 将要加密码的字符
 */
function strEncrypt($str = ''){
	$str = strrev($str);
	$strs = '?,+,Q,q,W,w,E,e,R,r,T,t,Y,y,U,u,I,i,O,o,P,p,A,a,S,s,D,d,F,f,G,g,H,h,J,j,K,k,L,l,Z,z,X,x,C,c,V,v,B,b,N,n,M,m,_,-,^';
	$lock = explode(',', $strs);
	$temp='';
	if ($str =='')return '';
	$k = 0;
	for ($i = 0 ; $i< strlen($str);  $i++){
		 $chr = $str[$i];
  		 $ord = ord($chr);
  		 $ord+=strlen($str)+5;

  		 if ($ord >56){
  		 	$k++;
  		 	$ord-=56;
  		 }
  		 if ($ord >56){
  		 	$k++;
  		 	$ord-=56;
  		 }
		 if ($ord >56){
  		 	$k++;
  		 	$ord-=56;
  		 }
		if ($ord >56){
  		 	$k++;
  		 	$ord-=56;
  		 }
		if ($ord >56){
  		 	$k++;
  		 	$ord-=56;
  		 }

  		
		$temp.=$lock[$ord].$k;
		$k=0;
	}

	return base64_encode($temp);
}

/**
 * 自定义内容解密
 * @param string $strs 需要解析的字符
 */
function strDecrypt($string = ''){
	$str = base64_decode($string);
	$strs = '?+QqWwEeRrTtYyUuIiOoPpAaSsDdFfGgHhJjKkLlZzXxCcVvBbNnMm_-^';
	$lock = explode(',', $strs);
	$temp='';	
	for ($i= 0; $i< strlen($str); $i++){
		$index = strpos($strs, $str[$i]);

		if ($index>0 ){
			
			if (!isset($str[$i+1]))return false;
			$num = $str[$i+1];
			$ascii = $index+$num*56;
			//echo "i=".$i." ".$ascii.":".chr($ascii)."  <br>";
			$temp.=chr($ascii);
		}
	}
	$len = strlen($temp);
	$temp='';
	for ($i= 0; $i< strlen($str); $i++){
		$index = strpos($strs, $str[$i]);

		if ($index>0 ){
			
			if (!isset($str[$i+1]))return false;
			$num = $str[$i+1];
			$ascii = $index+$num*56-5-$len;
			//echo "i=".$i." ".$ascii.":".chr($ascii)."  <br>";
			$temp.=chr($ascii);
		}
	}
	return strrev($temp);
}

/**
 * 字符串反转
 * @param string $string
 */
function strReverse($string = ''){
	if (empty($string)) return $string;
	$str = '';
	for ($i = strlen($string)-1; $i>=0; $i--){
		$str.= $string{$i};
	}
	return $str;
}



?>